#ifndef USERDAO_H
#define USERDAO_H

#include <QCache>
#include <QList>

#include "../Pojo/User.h"
#include "../qlsspecification.h"

class DLLQLSDBMANAGER_EXPORT UserDao
{
public:
	UserDao();

	/* 查找 */
	User* findOne(const quint32 &id);
	User* findOne(const QLsSpecification &spec);

	QList<User> findAll(const QLsSpecification &spec);

	/* 保存 */
	void save(const User *user);

	/* 删除 */
	void del(const quint32 &id);

	/* 查询表是否存在 */
	bool exists(const QString &databaseType);

	/* 创建表 */
	void CreateTable(const QString &databaseType);

private:
	/* 单条记录缓存，key:"id"，value:"User" */
	static QCache<QString, User> userCache;
	/* 缓存多条记录，key:"方法名+参数"，value：user列表 */
	static QCache<QString, QList<User>> usersCache;
};

#endif // USERDAO_H
